package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseFruitDao1;
import com.itheima.edu.info.manager.domain.Fruit;
import com.itheima.edu.info.manager.factory.FruitDaoFactory;

public class FruitService {
    //创建库管对象
    private BaseFruitDao1 fruitDao = FruitDaoFactory.getFruitDao();

    public Fruit[] findAllFruit(){
        Fruit[] allFruit = fruitDao.findAllFruit();
        // 定义一个标记: boolean flag=false,默认值表示先假设数组里全是null
        boolean flag = false;
        for (int i = 0; i < allFruit.length; i++) {
            Fruit f = allFruit[i];
            if (f != null) {
                flag = true;
                break;
            }
        }
        // 根据flag的值来决定当前方法的返回值
        if (flag) {
            // 说明allFruit中有水果对象,这是返回allFruit即可
            return allFruit;
        } else {
            // flag为false表示allFruit中全是null,一个水果对象都没有,这是返回null
            return null;
        }
    }

    // 添加
    public boolean addFruit(Fruit f) {
        // 将水果对象传递给FruitDao库管中的addFruit方法
        // 将返回的boolean类型结果, 返还给FruitController
        return fruitDao.addFruit(f);
    }

    //判断编号在系统【数据仓库】中是否存在
    public boolean isExists(String id) {
        //1. 让库管把仓库中所有数据都拿出来
        Fruit[] fruitArray = fruitDao.findAllFruit();
        //2. 定义一个标记: boolean flag=false,初始值为false,表示假设输入的id在数据中不存在
        boolean flag = false;
        //3. 遍历fruitArray,拿到每一个水果对象,取每个水果对象的id和传进来的id进行比较
        for (int i = 0; i < fruitArray.length; i++) {
            Fruit f = fruitArray[i];
            //判断当前水果对象不为空,并且当前水果对象的编号和管理者录入的编号是否一致
            if (f != null && f.getId().equals(id)) {
                flag = true;
                break;
            }
        }
        //4. 返回flag的值
        return flag;
    }

    //删除
    public void deleteFruit(String deleteId) {
        fruitDao.deleteFruit(deleteId);
    }

    //修改
    public void updateFruit(String updateId, Fruit newFruit) {
        fruitDao.updateFruit(updateId, newFruit);
    }
}
